const readline = require('readline-sync');
// 1.公牛母牛

// 游戏规则：电脑先生成一组没有重复数字的 4 个数，

// 玩家就可以开始猜。每猜一个数字，出数者就要根据这个数字给出

// 几 A 几 B，其中 A 前面的数字表示数字正确且位置也正确的数

//的个数，而 B 前的数字表示数字正确但位置不正确的数的个数。

//直到猜到4A0B为胜出

//一共有八次机会,验证用户输入是否是四位合法数，不合法不计入次数



let flag = true;
let i = 7;
//生成电脑的数字
function createComputer() {
    let arr = [];
    while (arr.length < 4) {
        let a = createRandom(0, 9);
        if (arr.indexOf(a) < 0) {
            arr.push(a);
        }
    }
    return arr
}


//接收用户输入的数字
function createPlayer() {
    console.log('请输入四位不重复的数字');
    let str = readline.question();
    //['1','2','3','4']
    let arr = str.split('').map(item => item - 0);
    return arr;
}

//比较函数
function judge(comArr, playerArr) {
    // A和B的计数
    let a = 0, b = 0;
    // 判断用户的数和电脑的数
    for (let i = 0; i < comArr.length; i++) {
        for (let j = 0; j < playerArr.length; j++) {
            if (comArr[i] == playerArr[j]) {
                if (i == j) {//数字相同且位置相同
                    a++;
                } else {//数字相同且位置不相同
                    b++;
                }
            }
        }
    }
    return [a, b];
}

//主函数
function main() {
    let flag = true;
    let i = 8;
    //生成电脑数
    let comArr = createComputer();
    while (flag) {
        //接收用户数
        let playerArr = createPlayer();
        // 判断用户输入是否合法
        if (playerArr.length == 4) {
            console.log(comArr,playerArr);
            //比较
            let result = judge(comArr, playerArr)
            console.log(result[0] + 'A' + result[1] + 'B');
            if (result[0] == 4) {
                console.log('你赢了');
                break;
            }
            i--;
        } else {
            console.log('输入不合法');
        }
        
        if (i <= 0) {
            console.log('没有机会了');
            flag = false;
        } else {
            console.log('还有' + i + '次');
        }

    }

}
main()

// 随机数
function createRandom(min = 0, max = 0) {
    // min>max交换值
    if (min > max) {
        [min, max] = [max, min];
    }
    let random = parseInt(Math.random() * (max - min + 1) + min);
    return random;
}